import Vue from 'vue'

import VueDirectiveImagePreviewer from 'vue-directive-image-previewer'
import 'vue-directive-image-previewer/dist/assets/style.css'
import env from "@/utils/env"
import 'normalize.css/normalize.css' // A modern alternative to CSS resets
import plugin from '@/plugin'
import 'element-ui/lib/theme-chalk/index.css'

import '@/styles/index.scss' // global css

import App from './App'
import router from './router'

import store from './store'

import '@/icons' // icon
import '@/permission' // permission control
import "./assets/font/iconfont.css"
import 'element-ui/lib/theme-chalk/base.css';
import CollapseTransition from 'element-ui/lib/transitions/collapse-transition';
import {
  Tree,
  Progress,
  Pagination,
  Dialog,
  Menu,
  Submenu,
  MenuItem,
  MenuItemGroup,
  Input,
  Radio,
  RadioGroup,
  RadioButton,
  Checkbox,
  CheckboxButton,
  CheckboxGroup,
  Switch,
  Select,
  Option,
  OptionGroup,
  Button,
  ButtonGroup,
  Table,
  TableColumn,
  DatePicker,
  TimeSelect,
  TimePicker,
  Breadcrumb,
  BreadcrumbItem,
  Form,
  FormItem,
  Icon,
  Row,
  Col,
  Upload,
  Badge,
  Card,
  Calendar,
  Loading,
  MessageBox,
  Message,
  Carousel,
  CarouselItem,
  Link,
  Scrollbar,
  Tabs, TabPane,
  PageHeader,
  Dropdown,
  DropdownMenu,
  DropdownItem,
  Popover,
  Cascader,
  InputNumber,
  Tag,
  Image,
  Notification
} from 'element-ui'
/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online ! ! !
 */
Vue.use(VueDirectiveImagePreviewer)
Vue.use(Image);
Vue.use(Progress);
Vue.use(Tag);
Vue.use(InputNumber);
Vue.use(Dropdown)
Vue.use(Cascader)
Vue.use(DropdownItem)
Vue.use(DropdownMenu)
Vue.use(Scrollbar)
Vue.use(plugin)
Vue.use(Link);
Vue.use(Carousel);
Vue.use(CarouselItem);
Vue.use(Pagination);
Vue.use(Dialog);
Vue.use(Menu);
Vue.use(Submenu);
Vue.use(MenuItem);
Vue.use(MenuItemGroup);
Vue.use(Input);
Vue.use(Radio);
Vue.use(RadioGroup);
Vue.use(RadioButton);
Vue.use(Checkbox);
Vue.use(CheckboxButton);
Vue.use(CheckboxGroup);
Vue.use(Switch);
Vue.use(Select);
Vue.use(Option);
Vue.use(OptionGroup);
Vue.use(Button);
Vue.use(ButtonGroup);
Vue.use(Table);
Vue.use(TableColumn);
Vue.use(DatePicker);
Vue.use(TimeSelect);
Vue.use(TimePicker);
Vue.use(Breadcrumb);
Vue.use(BreadcrumbItem);
Vue.use(Form);
Vue.use(FormItem);
Vue.use(Icon);
Vue.use(Row);
Vue.use(Col);
Vue.use(Upload);
Vue.use(Badge);
Vue.use(Card);
Vue.use(Calendar);
Vue.use(Tabs)
Vue.use(TabPane)
Vue.use(PageHeader)
Vue.use(Popover)
Vue.use(Tree)
Vue.use(Loading.directive);

Vue.prototype.$loading = Loading.service;
Vue.prototype.$confirm = MessageBox.confirm;
Vue.prototype.$message = Message;
Vue.prototype.$notify = Notification;
Vue.prototype.$alert = MessageBox.alert;
Vue.prototype.$env = env;
Vue.config.productionTip = false
Vue.component(CollapseTransition.name, CollapseTransition)
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
